package niconama04.shared.data;

import java.io.Serializable;
import java.util.List;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.NotPersistent;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

import niconama04.shared.data.Constants.Pos;

/**
 * 単語クラス
 * 
 * @author brigen
 */
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
public class Word implements Serializable {

	/** Serial Version */
	private static final long serialVersionUID = -8926450160597347164L;

	/** key */
	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Long key;

	/** 品詞Key */
	@Persistent
	private int posKey;

	/** 品詞 */
	@NotPersistent
	private Pos pos;

	/** surface */
	@Persistent
	private String surface;

	/** reading */
	@Persistent
	private String reading;

	/** baseform */
	@Persistent
	private String baseform;

	/** 原型key */
	@Persistent
	private Long originalKey;

	/** 原型 */
	@NotPersistent
	private Original original;

	/** 文法リスト */
	@NotPersistent
	private List<Grammer> grammers;

	/**
	 * keyを返す
	 *
	 * @return key
	 */
	public Long getKey() {
		return key;
	}

	/**
	 * keyを設定する
	 *
	 * @param x_key key
	 */
	public void setKey(Long x_key) {
		key = x_key;
	}

	/**
	 * 品詞Keyを返す
	 *
	 * @return 品詞Key
	 */
	public int getPosKey() {
		return posKey;
	}

	/**
	 * 品詞Keyを設定する
	 *
	 * @param x_posKey 品詞Key
	 */
	public void setPosKey(int x_posKey) {
		posKey = x_posKey;
	}

	/**
	 * 品詞を返す
	 *
	 * @return 品詞
	 */
	public Pos getPos() {
		return pos;
	}

	/**
	 * 品詞を設定する
	 *
	 * @param x_pos 品詞
	 */
	public void setPos(Pos x_pos) {
		pos = x_pos;
	}

	/**
	 * surfaceを返す
	 *
	 * @return surface
	 */
	public String getSurface() {
		return surface;
	}

	/**
	 * surfaceを設定する
	 *
	 * @param x_surface surface
	 */
	public void setSurface(String x_surface) {
		surface = x_surface;
	}

	/**
	 * readingを返す
	 *
	 * @return reading
	 */
	public String getReading() {
		return reading;
	}

	/**
	 * readingを設定する
	 *
	 * @param x_reading reading
	 */
	public void setReading(String x_reading) {
		reading = x_reading;
	}

	/**
	 * baseformを返す
	 *
	 * @return baseform
	 */
	public String getBaseform() {
		return baseform;
	}

	/**
	 * baseformを設定する
	 *
	 * @param x_baseform baseform
	 */
	public void setBaseform(String x_baseform) {
		baseform = x_baseform;
	}

	/**
	 * 原型keyを返す
	 *
	 * @return 原型key
	 */
	public Long getOriginalKey() {
		return originalKey;
	}

	/**
	 * 原型keyを設定する
	 *
	 * @param x_originalKey 原型key
	 */
	public void setOriginalKey(Long x_originalKey) {
		originalKey = x_originalKey;
	}

	/**
	 * 原型を返す
	 *
	 * @return 原型
	 */
	public Original getOriginal() {
		return original;
	}

	/**
	 * 原型を設定する
	 *
	 * @param x_original 原型
	 */
	public void setOriginal(Original x_original) {
		original = x_original;
	}

	/**
	 * 文法リストを返す
	 *
	 * @return 文法リスト
	 */
	public List<Grammer> getGrammers() {
		return grammers;
	}

	/**
	 * 文法リストを設定する
	 *
	 * @param x_grammers 文法リスト
	 */
	public void setGrammers(List<Grammer> x_grammers) {
		grammers = x_grammers;
	}
}